//是对一个结果的封装
#include <iostream>
#include <future>
#include <thread>

int Add(int n1, int n2)
{
    return n1 + n2;
}

int main()
{
    //先实例化一个promise对象
    std::promise<int> pro;
    //获取关联的future
    std::future<int> res = pro.get_future();
    //在任意位置给promise设置数据，就可以通过关联的future获取到这个数据了
    std::thread thr([&pro](){
        int sum = Add(11, 22);
        pro.set_value(sum);
    });

    //也会涉及作用域和生命周期的问题
    //如果pro销毁了，那么res.get()会出问题
    std::cout << res.get() << std::endl;
    thr.join();
    return 0;
}